from flask import Flask
app=Flask(__name__)

#1.路由定义
@app.route('/') #修饰器，用于定义路由，/表示根URL
def home():#视图函数，当访问根URL时，返回‘Welcome to the Home Page’
    return 'Welcome to the Home Page' 

#2.路由参数
@app.route('/greet/<name>')
def greet(name):
    return f'Hello,{name}!'

#3.路由规则
@app.route('/user/<int:user_id>') #匹配整数类型的user_id
def user_profile(user_id):
    return f'User ID:{user_id}'

@app.route('/file/<path:filename>') #匹配包括斜杠路劲filename
def serve_file(filename):
    return f'Serving file:{filename}'

#4.请求方法
@app.route('/submit',methods=['GET','POST'])
def submit():
    return 'Form submitted!'

#5.路由转换器
@app.route('/item/<int:item_id>/details')
def item_details(item_id):
    return f'Item details for item ID:{item_id}'

#6.路由函数返回
from flask import jsonify,Response
@app.route('/json')
def json_response():
    data={'key':'value'}
    return jsonify(data) #将字典转换为JSON响应

@app.route('/custom')
def custom_response():
    response=Response('Custom response with headers',status=200)
    response.headers['X-Custom-Header']='Value'
    return response #创建自定义响应对象

#7.静态文件和模板
#<link rel='sytlesheet' href='{{url_for('static',filename='style.css')}}'>
from flask import render_template
@app.route('/hello/<name>')
def hello(name):
    return render_template('hello.html',name=name)
#模板文件渲染
'''
from flask import render_template
@app.route('/hello/<name>')
def hello(name):
    return render_template('hello.html',name=name)
'''
#模板文件（templates/hello.html）

#8.路由优先级
#flask按照自定义的顺序匹配路由，第一个匹配成功的路由将被处理。确保更具体的路由放在更一般的路由之前
'''
@app.route('/user/<int:user_id>')
def user_profile(user_id):
    return f'User ID:{user_id}'
'''

@app.route('/user')
def user_list():
    return 'user list'
#/user/123将匹配到/user/<int:user_id>,而/user将匹配到user_list。
if __name__=='__main__':
    app.run()




